home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-08 | 60.0 KB | 1,430 lines | [TEXT/R*ch] |
- C.S.M.P. Digest Mon, 09 Nov 92 Volume 1 : Issue 211
-
- Today's Topics:
-
- Moving the mouse pointer-- how?
- Crippled LC Sound Chip? (was Re: Sound Manager Phooey!)
- Execution timing of ODOC
- ICMP
- CountAppFiles --- and starting a child process
- Disassembly with source in MPW?
-
-
-
- The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
-
- The digest is a collection of article threads from the internet newsgroup
- comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
- regularly and want an archive of the discussions. If you don't know what a
- newsgroup is, you probably don't have access to it. Ask your systems
- administrator(s) for details. (This means you can't post questions to the
- digest.)
-
- Each issue of the digest contains one or more sets of articles (called
- threads), with each set corresponding to a 'discussion' of a particular
- subject. The articles are not edited; all articles included in this digest
- are in their original posted form (as received by our news server at
- cs.uoregon.edu). Article threads are not added to the digest until the last
- article added to the thread is at least one month old (this is to ensure that
- the thread is dead before adding it to the digest). Article threads that
- consist of only one message are generally not included in the digest.
-
- The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
- [128.223.8.8] in the directory /pub/mac/csmp-digest. Be sure to read the
- file /pub/mac/csmp-digest/README before downloading any files. The most
- recent issues are available from sumex-aim.stanford.edu [36.44.0.6] in the
- directory /info-mac/digest/csmp. If you don't have ftp capability, the sumex
- archive has a mail server; send a message with the text '$MACarch help' (no
- quotes) to LISTSERV@ricevm1.rice.edu for more information.
-
- The digest is also available via email. Just send a note saying that you
- want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
- automatically receive each new issue as it is created. Sorry, back issues
- are not available through the mailing list.
-
- Send administrative mail to mkelly@cs.uoregon.edu.
-
-
- -------------------------------------------------------
-
- From: jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich)
- Subject: Moving the mouse pointer-- how?
- Organization: University of Illinois at Urbana
- Date: Thu, 1 Oct 1992 20:19:21 GMT
-
-
-
- I am writing a driver program that needs to move the mouse cursor
- location around the screen, but I'm not quite sure how to do that. Any
- tips on where to lookup functions that will assign a new mouse pointer
- location?
-
- Thanks o lot!
-
- - -Jay Kreibich
- jkreibic@uiuc.edu
-
- +++++++++++++++++++++++++++
-
- From: zocca@amc.uva.nl (Vincent Zocca)
- Date: Sun, 4 Oct 1992 10:34:08 GMT
- Organization: Uni. of Amsterdam, Fac. of Med.
-
- In article <BvGLsF.F1n@news.cso.uiuc.edu>, jkreibic@sumter.cso.uiuc.edu
- (Jay Arnold Kreibich) wrote:
- > I am writing a driver program that needs to move the mouse cursor
- > location around the screen, but I'm not quite sure how to do that. Any
- > tips on where to lookup functions that will assign a new mouse pointer
- > location?
-
- As far as I know it just can't be done. I think you've got to hide the
- cursor and make apear something that looks like a cursor but isn't.
-
-
- ------------------------------------------
- | Vincent Zocca |
- | |
- | University of Amsterdam |
- | Faculty of medicine |
- | Meibergdreef 9 |
- | 1105 AZ Amsterdam |
- | Phone: (***31) (0)20 5664403 |
- ------------------------------------------
-
- +++++++++++++++++++++++++++
-
- From: brianc@acuson.com (Brian Cox)
- Date: 6 Oct 92 00:28:46 GMT
- Organization: Acuson; Mountain View, California
-
- jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
-
-
-
- > I am writing a driver program that needs to move the mouse cursor
- >location around the screen, but I'm not quite sure how to do that. Any
- >tips on where to lookup functions that will assign a new mouse pointer
- >location?
-
- > Thanks o lot!
-
- >-Jay Kreibich
- > jkreibic@uiuc.edu
-
-
- Without getting in to the subjective merits of doing so, I'll just
- mention that Apple strongly discourages moving the mouse sprite
- without an analogous action from the user. They discourage it to
- the extent that they don't provide a routine that does it. You
- might try hiding the cursor and drawing your own. But that would
- get really ugly fast...
-
- Are you really sure that you want to move the mouse cursor?
-
- --BC--
-
-
- - --
-
- --Brian Cox--
- - ------------------
-
- +++++++++++++++++++++++++++
-
- From: zobkiw@world.std.com (Joe Zobkiw)
- Date: 6 Oct 92 12:39:07 GMT
- Organization: The World Public Access UNIX, Brookline, MA
-
- Brian Cox writes:
- "They discourage it to
- the extent that they don't provide a routine that does it."
-
- They also don't provide a routine to read a PICT file ;)
-
-
- - --
- - -------------------------------------------------------------
- joe zobkiw zobkiw@world.std.com aol: aflzobkiw
-
- macintosh.midi.synthesis.c.oop.asm.communications.graphics...
-
- +++++++++++++++++++++++++++
-
- From: Michael F. Kamprath <kamprath@space-grant.sprl.umich.edu>
- Date: Tue, 06 Oct 92 13:21:46 EDT
- Organization: University of Michigan, Aerospace Engineering
-
- In article <1992Oct6.002846.10641@acuson.com> Brian Cox, brianc@acuson.com writes:
- >jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
- >
- >
- >
- >> I am writing a driver program that needs to move the mouse cursor
- >>location around the screen, but I'm not quite sure how to do that. Any
- >>tips on where to lookup functions that will assign a new mouse pointer
- >>location?
- >
- >> Thanks o lot!
- >
- >>-Jay Kreibich
- >> jkreibic@uiuc.edu
- >
- >
- >Without getting in to the subjective merits of doing so, I'll just
- >mention that Apple strongly discourages moving the mouse sprite
- >without an analogous action from the user. They discourage it to
- >the extent that they don't provide a routine that does it. You
- >might try hiding the cursor and drawing your own. But that would
- >get really ugly fast...
- >
-
- But it has to be possible . . . my reason for saying this is that MacX allows
- the cursor to be under the client's control (a nice feature of X-windows).
- MacX is written by Apple, who surely know how to do this.
-
- ========================================================================
- | Michael F. Kamprath | The University of Michigan |
- | kamprath@space-grant.sprl.umich.edu | Aerospace Engineering |
- | kamprath@engin.umich.edu | |
- +---------------------------------------+------------------------------+
- | This country is a _democracy_. It is NOT a "Two Party Sytem." DO |
- | NOT believe The Lie that not voting Republican or Democratic will |
- | waste your vote. Vote for who ever you please, and let the |
- | politicians find out what a democratic government is all about. |
- ========================================================================
-
- +++++++++++++++++++++++++++
-
- From: grobbins@Apple.COM (Grobbins)
- Date: 6 Oct 92 19:54:56 GMT
- Organization: Apple Computer Inc., Cupertino, CA
-
- In article <1992Oct6.002846.10641@acuson.com> brianc@acuson.com (Brian Cox) writes:
- >jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
- >> I am writing a driver program that needs to move the mouse cursor
- >>location around the screen, but I'm not quite sure how to do that. Any
- >>tips on where to lookup functions that will assign a new mouse pointer
- >>location?
- >
- >Without getting in to the subjective merits of doing so, I'll just
- >mention that Apple strongly discourages moving the mouse sprite
- >without an analogous action from the user. They discourage it to
- >the extent that they don't provide a routine that does it.
-
- While programmatic control of the mouse is discouraged, the
- steps necessary are documented by DTS. Pasted below are two of
- several entries from the Q&A Stack on mouse movement.
-
-
- Grobbins grobbins@apple.com
-
- - ---
-
- from the Q&A Stack (available in the dts area of ftp.apple.com):
-
-
- I'm writing a tablet (mouse, pointer, etc.) driver, and I need to be able to
- position the cursor and post mouseUp mouseDown events. How do I do it?
-
- Here is an explanation of the Macintosh@ mouse/cursor mechanism, which
- should provide the information necessary for you to place the cursor:
-
- The mouse is a "relative" device, which means it does not return actual
- coordinates; it returns a "count" or amount of movement since the last
- report.
-
- When the mouse has new information, it interrupts the Macintosh. The
- interrupt handler adds the horizontal and vertical counts to MTemp (a
- low-memory location), and sets crsrNew to tell the system that the
- coordinates are new. Some time later (but before normal VBLs are executed)
- the cursor VBL task is executed, and it compares MTemp with RawMouse (which
- has the last value), and figures out the delta (that is, the horizontal and
- vertical distance moved), and does the scaling trick depending on what the
- user has selected in the control panel. It also updates MTemp to reflect the
- new value. Then it draws the cursor.
-
- Here are the names and locations of the relevant low-memory locations:
-
-
- RawMouse equ $82C ;point
- MTemp equ $828 ;point
- CrsrNew equ $8CE ;byte
- CrsrCouple equ $8CF ;byte
-
-
- (NOTE: These may change in future CPUs.)
-
- If you wish to place the cursor in an absolute location on the screen, you
- must set RawMouse, and MTemp to the same value, and set CrsrNew to the same
- value as CrsrCouple.
-
- Keep in mind that moving the cursor from an application may violate the
- Human Interface Guidelines, possibly confusing and frustrating the user.
- Also keep in mind that the low-memory locations named above are not
- documented, and as such, are considered unsupported and volatile.
-
- Posting mouse down/up events is a simple matter of keeping track of the last
- state of your device button, and when you detect a change, you post the
- appropriate event. If you wish to support the ToolBox Event Manager call
- Button, you must also update the low-memory global MBState. The high bit of
- MBState reflects the current state of the mouse button: 1 = button up, 0 =
- button down.
-
- Unfortunately, the system mouse driver will change this value if it notices
- that the state of MBState is different from the state of the real mouse
- button. This means if there is a mouse connected to the Macintosh while your
- device is connected, it will override whatever you put in MBState. On
- systems equipped with ADB, this will happen only when the mouse moves, or
- the button is pressed. On earlier systems this happens all the time, since
- the button checking routine was a VBL task, and is always executed. One
- possible workaround is to patch Button, and return the state of your button,
- rather than MBState. The obvious problem is that you disable the real mouse
- from working with Button.
-
-
- - ----
-
-
- How can I programmatically move the Macintosh@ mouse without the real mouse
- interfering?
-
- The real answer to your question is twofold: First, you can do exactly what
- you want to do with the sample included below. HOWEVER, this is not a good
- thing to do, it would be better if you took the solution used in Apple's
- Guided Tour disks: Always hide the cursor and then decouple the cursor from
- the mouse. Then, instead of using the system's cursor, simply draw your own
- "cursor" using QuickDraw and treat it as a little animated bitmap on the
- screen. This avoids all the problems that you have with the mouse competing.
- (Apple does update the mouse globals with the mouse position so that other
- things function correctly.)
-
- Now, as promised, here is the way to do what you want using the real cursor.
- As you have discovered, setting the crsrCouple variable to false prohibits
- the mouse from affecting the cursor; unfortunately, it also prohibits the
- jcrsrTask routine from drawing the cursor. The solution to this is to set
- crsr couple to true, call the cursor drawing routine jCrsrTask yourself, and
- then set the crsrCouple variable to false, as shown below:
-
-
- procedure callcrsr;
- inline $2078 ,$08EE ,$4E90;
- { move.L jcrsrTask,A0
- jsr (A0) }
-
- Procedure FudgeMouse;
-
- type PointPtr=^Point;
-
- var RawMouse:PointPtr;
- MTemp:PointPtr;
- RandPt:Point;
- CrsrNew:ptr;
- CrsrCouple:ptr;
- fred:Longint;
-
- begin
- RawMouse:=PointPtr($82C);
- MTemp:=PointPtr($828);
- CrsrNew:=ptr($8CE);
- CrsrCouple:=ptr($8CF);
- RandPt:=RawMouse^;
- repeat
- RandPt.h:=RandPt.h+1;
- RandPt.V:=RandPt.v+1;
- RawMouse^:=RandPt;
- MTemp^:=RandPt;
- CrsrNew^:=1;
- CrsrCouple^:=1;
- callCrsr;
- crsrCouple^:=0;
- repeat until fred<tickCount;
- fred:=tickCount+3;
- until Button;
- crsrCouple^:=1;
- end;
-
-
-
-
- +++++++++++++++++++++++++++
-
- From: paulr@syma.sussex.ac.uk (Paul Russell)
- Organization: University of Sussex
- Date: Wed, 7 Oct 1992 14:31:06 GMT
-
- >>jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
- >>
- >>
- >>
- >>> I am writing a driver program that needs to move the mouse cursor
- >>>location around the screen, but I'm not quite sure how to do that. Any
- >>>tips on where to lookup functions that will assign a new mouse pointer
- >>>location?
- >>
-
- Shame on me for posting this - my only excuse is that I work in a
- psychology department... ;-) This code was written by me a long time
- ago, and may be freely used...
-
- - ---
-
- unit UMouseStuff; { mouse utilities }
-
- interface
-
- procedure SetMouse (pt: Point); { move the current cursor position to the given point }
-
- implementation
-
- const { low memory globals }
- jCrsrTask = $08EE; { ProcPtr }
- MTemp = $0828; { Point - Low Level interupt mouse location }
- RawMouse = $082C; { Point - unprocessed mouse location }
- Mouse = $830; { Point - processed mouse location }
- CrsrNew = $08CE; { char - set != 0 if mouse has moved }
- CrsrCouple = $08CF; { char - set = 0 if cursor not allowed to move }
-
- type
- PointPtr = ^Point; { a pointer to a point }
-
- {--- private functions for accessing low memory globals ---}
-
- function Get_MTemp: Point;
-
- begin
- Get_MTemp := PointPtr(MTemp)^;
- end; { Get_MTemp }
-
- procedure Set_MTemp (pt: Point);
-
- var
- ptp: PointPtr;
-
- begin
- ptp := PointPtr(MTemp);
- ptp^ := pt;
- end; { Set_MTemp }
-
- function Get_RawMouse: Point;
-
- begin
- Get_RawMouse := PointPtr(RawMouse)^;
- end; { Get_RawMouse }
-
- procedure Set_RawMouse (pt: Point);
-
- var
- ptp: PointPtr;
-
- begin
- ptp := PointPtr(RawMouse);
- ptp^ := pt;
- end; { Set_RawMouse }
-
- function Get_Mouse: Point;
-
- begin
- Get_Mouse := PointPtr(Mouse)^;
- end; { Get_Mouse }
-
- procedure Set_Mouse (pt: Point);
-
- var
- ptp: PointPtr;
-
- begin
- ptp := PointPtr(Mouse);
- ptp^ := pt;
- end; { Set_Mouse }
-
- procedure Set_CrsrNew;
-
- var
- p: Ptr;
-
- begin
- p := Ptr(CrsrNew);
- p^ := 1;
- end;
-
- procedure SetMouse (pt: Point);
-
- begin
- Set_MTemp(pt); { set both of these low memory mouse positions to the new point }
- Set_RawMouse(pt); { (this prevents scaling) }
- Set_CrsrNew; { flag that the mouse has moved }
- end; { SetMouse }
-
- end.
-
- - ---
- | Paul Russell | "Some instructions have legal operation codes |
- | Experimental Psychology | but try to perform nonsensical operations. |
- | Sussex University, Falmer | These are called insane instructions." |
- | Brighton BN1 9QG, England | -- Motorola DSP 56k User's Manual |
-
- - --
- | Paul Russell | "Some instructions have legal operation codes |
- | Experimental Psychology | but try to perform nonsensical operations. |
- | Sussex University, Falmer | These are called insane instructions." |
- | Brighton BN1 9QG, England | -- Motorola DSP 56k User's Manual |
-
- ---------------------------
-
- From: bernard@cs.colorado.edu (Bernie Bernstein)
- Subject: Crippled LC Sound Chip? (was Re: Sound Manager Phooey!)
- Organization: University of Colorado at Boulder
- Date: Tue, 6 Oct 1992 16:02:47 GMT
-
- In article <1992Oct5.022712.3448@news.cs.brandeis.edu>,
- dan@chaos.cs.brandeis.edu (Dan Schwarz) wrote:
- >
- > In article <w=mz_wc@rpi.edu> johnsd2@rpi.edu writes:
- > >I am having a problem with an extension I am writing. This extension
- > >is really a background app (type='appe'), which plays sounds asynchronously
- > >in the background (which sounds are specified with annother program, that
- > >works);
- > ...
- > >This strange freeze happens on a friends LC whenever
- > >the sound is played, even from an APPL. (but only if its
- > >asynchronously)
- >
- > Speaking as a programmer who has done some SERIOUS sound manager hacking,
- > I can sympathize with your frustration. Here's what I can tell you:
- >
- > * the Mac LC uses a crippled version of the Apple Sound Chip. So does the LC II
- > and Classic II, by the way. Major difference is that this chip can only handle
- > monophonic sound output, and cannot support simultaneous sound recording &
- > playback.
-
- I recently wrote a hack which listens to the sound input device, filling a
- bunch of buffers. It then plays back random buffers while continuing to
- fill or replace the other buffers. Everything is done asynchronously.
- According to the above quote, this is impossible to do on a Mac LC.
-
- I have been getting email from several LC users who say that the program
- seems to fill the buffers correctly, but nothing is played back. This seems
- to fit with the "crippled chip" theory.
-
- Is there any gestalt call to see if the current machine has the "crippled
- chip"? I would like my program to continue to work the way it is now on
- most machines, but use a workaround for the crippled machines.
-
-
- o, ,, , | Bernie Bernstein | , ,,
- L>O/ `,/ ` ,| University of Colorado at Boulder |/ `,,/ `
- O./ ' / . `, / | home: 303-444-3168 | / ` ` ,.
- ,/ / , ' | email: bernard@cs.colorado.edu | / '' `
-
- +++++++++++++++++++++++++++
-
- From: REEKES@applelink.apple.com (Jim Reekes)
- Date: 8 Oct 92 19:40:09 GMT
- Organization: Apple Computer, Inc.
-
- In article <bernard-061092095702@kashmir.cs.colorado.edu>,
- bernard@cs.colorado.edu (Bernie Bernstein) wrote:
- >
- > In article <1992Oct5.022712.3448@news.cs.brandeis.edu>,
- > dan@chaos.cs.brandeis.edu (Dan Schwarz) wrote:
- > >
- > > In article <w=mz_wc@rpi.edu> johnsd2@rpi.edu writes:
- > > >I am having a problem with an extension I am writing. This extension
- > > >is really a background app (type='appe'), which plays sounds asynchronously
- > > >in the background (which sounds are specified with annother program, that
- > > >works);
- > > ...
- > > >This strange freeze happens on a friends LC whenever
- > > >the sound is played, even from an APPL. (but only if its
- > > >asynchronously)
- > >
- > > Speaking as a programmer who has done some SERIOUS sound manager hacking,
- > > I can sympathize with your frustration. Here's what I can tell you:
- > >
- > > * the Mac LC uses a crippled version of the Apple Sound Chip. So does the LC II
- > > and Classic II, by the way. Major difference is that this chip can only handle
- > > monophonic sound output, and cannot support simultaneous sound recording &
- > > playback.
- >
- > I recently wrote a hack which listens to the sound input device, filling a
- > bunch of buffers. It then plays back random buffers while continuing to
- > fill or replace the other buffers. Everything is done asynchronously.
- > According to the above quote, this is impossible to do on a Mac LC.
- >
- > I have been getting email from several LC users who say that the program
- > seems to fill the buffers correctly, but nothing is played back. This seems
- > to fit with the "crippled chip" theory.
- >
- > Is there any gestalt call to see if the current machine has the "crippled
- > chip"? I would like my program to continue to work the way it is now on
- > most machines, but use a workaround for the crippled machines.
-
- All of this talk about a sound chip being "crippled" is off target. The
- Mac LC was designed to have the sound chip that is does. It wasn't
- crippled.
-
- The Mac LC has Sound Hardware that mimics _some_ of the functionality of
- the Apple Sound Chip. It cannot do stereo. It only has one FIFO. This
- FIFO is shared by both input and output. You cannot record and playback
- at the same time on a Mac LC because of this.
-
- We've added a Gestalt bit to determine if the machine can do this. It's
- in System 7.1.
-
- /* built-in hardware can play and record simultaneously */
- gestaltPlayAndRecord = 6,
-
- For older system releases you can check if the machine can perform stereo.
- If this is true, then you should be able to record and playback at the
- same time. Always check for the gestaltPlayAndRecord first, since this
- is alway more accurate than the gestaltStereoCapability flag.
-
- - -----------------------------------------------------------------------
- Jim Reekes, Polterzeitgeist | Macintosh Toolbox Engineering
- | Sound Manager Expert
- Apple Computer, Inc. | RAll opinions expressed are mine, and do
- 20525 Mariani Ave. MS: 81-KS | not necessarily represent those of my
- Cupertino, CA 95014 | employer, Apple Computer Inc.S
-
- ---------------------------
-
- From: kamprath@space-grant.sprl.umich.edu (Michael F. Kamprath)
- Subject: Execution timing of ODOC
- Date: 5 Oct 92 17:05:20 GMT
- Organization: University of Michigan, Aerospace Engineering
-
- Whenever I send my application an open document event from outside the
- application, it will not actually open the document until I bring the
- application to the front. How do I get the program to open it imediately
- while it is still in the background? I assume this ia an easy one, but I
- just don't see it.
-
- ========================================================================
- | Michael F. Kamprath | The University of Michigan |
- | kamprath@space-grant.sprl.umich.edu | Aerospace Engineering |
- | kamprath@engin.umich.edu | |
- +---------------------------------------+------------------------------+
- | This country is a _democracy_. It is NOT a "Two Party Sytem." DO |
- | NOT believe The Lie that not voting Republican or Democratic will |
- | waste your vote. Vote for who ever you please, and let the |
- | politicians find out what a democratic government is all about. |
- ========================================================================
-
- +++++++++++++++++++++++++++
-
- From: schulte@KLIN.FAR.RUU.NL ("Bas Schulte, Spider")
- Date: 6 Oct 92 00:29:01 GMT
-
- In <0q3-4l@engin.umich.edu>, Michael F. Kamprath
- <kamprath@space-grant.sprl.umich.edu> wrote:
-
- >Whenever I send my application an open document >event from outside the
- >application, it will not actually open the >document until I bring the
- >application to the front. How do I get the >program to open it imediately
- >while it is still in the background? I assume >this ia an easy one, but I
- >just don't see it.
-
-
- Hmm, your ODOC handler might do a SetFrontProcess to your app's process serial
- number to do this, but I don't think it is always a good idea to bring your app
- to the front when it receives an ODOC event (Apple?),
-
- best regards,
-
- Bas Schulte.
-
-
- - ----
- This is getting better and better!
- from: schulte@klin.far.ruu.nl
-
- +++++++++++++++++++++++++++
-
- From: minow@Apple.COM (Martin Minow)
- Date: 8 Oct 92 14:45:44 GMT
- Organization: Apple Computer Inc., Cupertino, CA
-
-
- In <0q3-4l@engin.umich.edu>, Michael F. Kamprath
- <kamprath@space-grant.sprl.umich.edu> wrote:
-
- >Whenever I send my application an open document >event from outside the
- >application, it will not actually open the >document until I bring the
- >application to the front. How do I get the >program to open it imediately
- >while it is still in the background? I assume >this ia an easy one, but I
- >just don't see it.
-
- Make sure your application SIZE resource flags include "background NULL
- events." The value 0x58E0 seems to work for me. Your initialization
- sequence ought to include something like the following:
- FlushEvents(everyEvent, 0);
- /*
- * Clean out event queue -- see Tech Note 180.
- * Calling EventAvail tells Multifinder to bring
- * the application to the front. It is needed
- * especially if canBackground is set in the
- * size resource, but harmless otherwise.
- */
- for (i = 1; i <= 3; i++)
- EventAvail(everyEvent, &EVENT);
-
- Hope this helps.
-
- Martin Minow
- minow@apple.com
-
- ---------------------------
-
- From: resnick@cogsci.uiuc.edu (Pete Resnick)
- Subject: ICMP
- Date: 5 Oct 92 04:02:02 GMT
- Organization: University of Illinois at Urbana
-
- sdorner@qualcomm.com (Steven Dorner) writes:
-
- >Reporting ICMP unreachables is fine. *Acting* on them is another matter.
- >A single ICMP unreachable means very little, and should be ignored.
-
- I disagree in the case of a TCPActiveOpen. Any good program, I would
- contend, should immediately give up on the first ICMP destination
- unreachable on an open. If the user wishes to attempt the open again,
- that is fine, but that is better than trying to second guess the user
- on how long is OK to wait. Providing a user configurable timeout is
- fine, but waiting for TCP to time out is not. Not that UNIX should
- *ever* be taken as gospel, but as an example, most UNIX TCP programs I
- know abort the open attempt immediately on an ICMP destination
- unreachable.
-
- >A series of ICMP unreachables is probably meaningful, but it's easier just to
- >report the problem and let the user decide to cancel if he wants to.
-
- Easier, yes, user friendly, I'm not convinced. My gut says that a good
- program should have some set default (perhaps 5 destination
- unreachables in a row) before aborting the connection and reporting to
- the user some network trouble. This should of course be configurable
- for power users. I find, for example, Eudora's method of reporting:
-
- "ICMP destination unreachable. This may or may not be important."
-
- confusing to the average uninformed user, and certainly not telling
- the user when it *is* important and what to do if so (i.e. cancel,
- continue).
-
- Maybe we should move this to comp.protocols.tcpip if it continues?
-
- pr
- - --
- Pete Resnick (...so what is a mojo, and why would one be rising?)
- Graduate assistant - Philosophy Department, Gregory Hall, UIUC
- System manager - Cognitive Science Group, Beckman Institute, UIUC
- Internet: resnick@cogsci.uiuc.edu
-
- +++++++++++++++++++++++++++
-
- From: pirard@vm1.ulg.ac.be (Andre' Pirard)
- Date: 7 Oct 92 11:54:55 GMT
- Organization: Universite' de Lie`ge (Belgium)
-
- In article <BvMr7F.1ys@news.cso.uiuc.edu> Pete Resnick,
- resnick@cogsci.uiuc.edu writes:
- >for power users. I find, for example, Eudora's method of reporting:
- >
- >"ICMP destination unreachable. This may or may not be important."
- >
- >confusing to the average uninformed user, and certainly not telling
- >the user when it *is* important and what to do if so (i.e. cancel,
- >continue).
-
- Perfectly right ;-) Seeing the (French translated) message "An ICMP
- message was receive. This ...", a paniced brave lady phoned and told me
- that about any message she receives *is* important.
- However, I wouldn't blame Eudora, she copes perfectly well with all the
- rest.
-
- On the more serious technical side, the other remark is true.
- A program may shorten the time to *open* a connection by receipt of
- ICMP(s), but it certainly must let the user decide whether to close one
- that's open or to give him a chance to go to the machine room and fix the
- cable instead.
-
- - -----
- Andre Pirard SEGI, Univ. de Li`ge 139.165 IP coordinator
- B26 - Sart Tilman B-4000 Li`ge 1 (Belgium) +32 (41) 564932
- pirard@vm1.ulg.ac.be alias PIRARD@BLIULG11.BITNET
-
- ---------------------------
-
- From: tomh@wes.on.ca (Tom Haapanen)
- Subject: CountAppFiles --- and starting a child process
- Date: 7 Oct 92 00:06:24 GMT
- Organization: Waterloo Engineering Software
-
- My Mac app is progressing (thanks to those who helped me out at an earlier
- stage), and my collection of Inside Mac volumes is growing. :) However,
- I have run into some more roadblocks.
-
- - I'm using CountAppFiles as described in both Inside Mac and Macintosh
- Revealed. However, no matter how many files I drag to my app, or how
- many data files I try to print, the second parameter gets set to 0. The
- app starts up fine from double-clicking on a datafile, but there is no
- filename that I could open.
-
- My Think C 5.0 code fragment:
-
- short iWhat, iCount;
- CountAppFiles( &iWhat, &iCount );
-
- iCount gets set to 0, and iWhat seems to get set to a random value.
- What's going on? (I'm running System 7.0.1 on a IIcx.)
-
- - I need to start up a file browser to view my output files. In another
- environment I'd use spawn() or system() or WinExec(), but I can't find
- anything in the manuals that'd start another app without closing the
- current one. Surely there is a way to do it, right? (No, the app
- won't need to run on System 6.)
-
- Any and all help, hints, suggestions, tips and sympathy are gratefully
- accepted! :)
-
- [ \tom haapanen "i don't even know what street canada is on" -- al capone ]
- [ tomh@wes.on.ca "trust the programmer" -- ansi c standard ]
- [ waterloo engineering software "to thine own self be true" -- polonius ]
-
- +++++++++++++++++++++++++++
-
- From: chuck@gte.com (Chuck Hoffman)
- Date: 8 Oct 92 13:07:46 GMT
- Organization: GTE Laboratories
-
- In article <1992Oct07.000624.14905@wes.on.ca>, tomh@wes.on.ca (Tom
- Haapanen) wrote:
- >
- > My Mac app is progressing (thanks to those who helped me out at an earlier
- > stage), and my collection of Inside Mac volumes is growing. :) However,
- > I have run into some more roadblocks.
- >
- > - I'm using CountAppFiles as described in both Inside Mac and Macintosh
- > Revealed. However, no matter how many files I drag to my app, or how
- > many data files I try to print, the second parameter gets set to 0. The
- > app starts up fine from double-clicking on a datafile, but there is no
- > filename that I could open.
- >
- > My Think C 5.0 code fragment:
- >
- > short iWhat, iCount;
- > CountAppFiles( &iWhat, &iCount );
-
- Tom,
- The following routine is from a sample application I wrote. THINK C
- release 5.0 - 5.0.3. It works fine. The only difference I see is that I
- defined the count as an int, instead of short. I'm making a bug fix to the
- app, called "Chassis" this weekend. If you want a copy, please send me a
- mailing address ("real" mail, not e-mail) and I'll send it to you for the
- low, low "price" of asking you to beta test the bug fix. I'll put it out
- on the net after it has been tested.
- Sorry, can't help with your other question about spawning or attaching
- other processes. I doubt that the Mac OS can truly do that, but there may
- be some fakey way.
-
- Chuck Hoffman
- chuck@gte.com
- GTE Laboratories, Waltham, Massachusetts, USA
- (617) 466-2131
- =====================================
- I'm not sure why we're here, but I am sure that while we're here we're
- supposed to help each other.
- =====================================
- /************************************************************************************/
- /* FinderFilesProc */
- /* */
- /* If the program was entered by the user's selecting one or more files,
- and then */
- /* using "Open" from the Finder menu (or command-O, or by dragging the file
- icons */
- /* into the application program icon (System 7)), open each of the
- files. */
- /* */
- /* If the program was entered by the user's selecting one or more files,
- and then */
- /* using "Print" from the Finder menu (or command-P), then for each file,
- open it, */
- /* print it, and close it. After this has been done for each file,
- quit. */
- /************************************************************************************/
-
- #include "MyHeaders.h"
-
- int FinderFilesProc ()
- {
- int FFRetCode = 0;
-
- UseResFile (initResRefNum); /* for H/P printer */
-
- appIndex = 1; /* initialize */
- CountAppFiles (&appMessage, &appCount); /* How many from Finder? */
- if (appCount > 0) /* if 1 or more */
- {
- if (appMessage == appOpen) /* if they are for "Open" */
- {
- for (appIndex=1; appIndex <= appCount; appIndex++) /* for each one */
- {
- appMenuLong = ((0x010000 * FileMenuID) + OpenItem); /* menu parm */
- WorkRetCode = MenuProc (appMenuLong); /* do "open" menu item */
- if (WorkRetCode != 0)
- break;
- ClrAppFiles (appIndex); /* remove from Finder list */
- }
- }
- else
- if (appMessage == appPrint) /* if they are for "Print" */
- {
- for (appIndex=1; appIndex <= appCount; appIndex++) /* for each one */
- {
- appMenuLong = ((0x010000 * FileMenuID) + OpenItem); /* menu parm */
- WorkRetCode = MenuProc (appMenuLong); /* do "open" menu item */
- if (WorkRetCode != 0)
- break;
-
- appMenuLong = ((0x010000 * FileMenuID) + PrintItem); /* menu parm */
- WorkRetCode = MenuProc (appMenuLong); /* do "print" menu item */
- if (WorkRetCode != 0)
- break;
-
- appMenuLong = ((0x010000 * FileMenuID) + CloseItem); /* menu parm */
- WorkRetCode = MenuProc (appMenuLong); /* do "close" menu item */
-
- ClrAppFiles (appIndex); /* remove from Finder list */
- }
-
- appMenuLong = ((0x010000 * FileMenuID) + QuitItem); /* menu parm */
- WorkRetCode = MenuProc (appMenuLong); /* do "quit" menu item */
- }
- }
-
- return FFRetCode;
- }
-
- ---------------------------
-
- From: chrism@col.hp.com (Chris Magnuson)
- Subject: Disassembly with source in MPW?
- Date: Wed, 30 Sep 1992 17:01:19 GMT
- Organization: HP Colorado Springs Division
-
- I must be overlooking something here...how do you get dissassembled output
- with source code interleaved in between? I used DumpObj to get something
- of the form:
-
- 00000000: 4E56 0000 LINK A6,#$0000
- more assembly follows...
-
- and the source lines are located later in the file. Is there a way to
- get the source lines in the same listing as the assembly code with MPW?
-
- Thanks,
- chrism@col.hp.com
-
- +++++++++++++++++++++++++++
-
- From: keith@taligent.com (Keith Rollin)
- Organization: Taligent
- Date: Wed, 30 Sep 1992 20:45:13 GMT
-
- In article <1992Sep30.170119.412@col.hp.com>, chrism@col.hp.com (Chris
- Magnuson) wrote:
- >
- > I must be overlooking something here...how do you get dissassembled output
- > with source code interleaved in between? I used DumpObj to get something
- > of the form:
- >
- > 00000000: 4E56 0000 LINK A6,#$0000
- > more assembly follows...
- >
- > and the source lines are located later in the file. Is there a way to
- > get the source lines in the same listing as the assembly code with MPW?
-
- There's a guy at Apple who wrote a tool to do this. The System 7.0 guys
- used it to figure out what high-level code generated the best object code.
- I'd send the tool to you, but the one I have is old and doesn't work with
- MPW 3.2. Perhaps someone at Apple can make available the most recent
- version, or you can try to duplicate what he did. I recall that the tool
- was pretty small (10K or so) and worked from .o files created with -sym on.
-
- - -----
- Keith Rollin
- Phantom Programmer
- Taligent, Inc.
-
- +++++++++++++++++++++++++++
-
- Organization: Stanford Linear Accelerator Center
- Date: Thursday, 1 Oct 1992 01:16:13 PST
- From: Nobukazu Toge <TOGE@SLACVM.SLAC.STANFORD.EDU>
-
- If you are willing to shell out $350 or so, then you can use Steve Jasik's
- MacNosy and Debugger. What you do is to compile and link your MPW program with
- - -sym on, start your app, then jusp into Steve's Debugger one way or the other.
- You will see a source listing that the program is executing. If you click
- on the window while holding down the command key, you'll get an assembly
- listing with the higher-language source interlaced. You can save the listing
- to a text file.
-
- It is very much round-about and somewhat ugly, but it works.
- (You can do the same with Think C projects).
-
- If someone has written an MPW tool to show assembly + source listing,
- that's certainly much nicer.
-
- - - Nobu Toge (ex-SLAC, now-KEK)
-
- #include <StandardDisclaimers.h>
-
- +++++++++++++++++++++++++++
-
- From: Manuel Veloso <veloso@husc9.harvard.edu>
- Date: 1 Oct 92 09:04:07 EDT
- Organization: Harvard University
-
- In article <1992Sep30.170119.412@col.hp.com> Chris Magnuson,
- chrism@col.hp.com writes:
- >and the source lines are located later in the file. Is there a way to
- >get the source lines in the same listing as the assembly code with MPW?
-
- The tool's name is (was) UltraSlimFast, by Nick Kledzik. The one I've got
- is dated
- 10-Oct-90, but I'm pretty sure that it still works. The one thing about
- it is
- that you can't have (or must, I'm not sure) string constants embedded
- within the
- function (option -b, -b2, -b3); if they are (or aren't), no listing of
- the code is
- generated.
-
- Here's the file, UltraSlimFast.cpt.hqx. The author said it was acceptable
- to pass
- it on...
-
- - ----------------
-
- (This file must be converted with BinHex 4.0)
- :%99XG(*K8faTE8CKFh3ZBh"d!&""3e4$8%08!!!!!$K3!!!!!+!N!3&6RJ!!0mf
- !4QGSChKiD(PSDAZ+HBU+Q'PkHSTkLBGhHSZEQBbCLSKQD)L(H(TjH(ThHCTkRCf
- A@BL(CTLBGhGYGhLUQSf+I(L+UBH*QTV)HjQ!VDfFV+ZEMDbEQCZjUiUGR+ZEMB#
- XHBZGZTfUN!#3!)UCLDLCLTQEQUfEZCb3!*LDMCZ0S)Z,LBBJ!!%c4&CRCiQ)QTU
- DQUUm`,`!`!#m!-$!!!!!!!!!c!a!)d99CQCRCRGhGhKiH)KhLBL(LCL)L)Q)Q*H
- )LCQSU*LSQ*LBL*L*LCL+QBQ*QTQEUDU*V)N*QUUCZjR+UjQBZS3M!*YZ*#&i!N2
- ak(Im#VfGjXZdQrqZkSrDdB(5@"hf0ePD2YX6+b1l[m6GBZdl[*bSiAGVHhq!!Nf
- 0#01MCMj%)ErJ61,hr*hi%5Eh@iH6XmEFhZ2Nr3l48YpA)h@9KhH-`0bFVZmV$Qp
- Rp+EYm1MMj'(XFIFiDM1JB[-2%bF0@-N))+%k23k&JjZ1l8FlDm`0VGcGRYYTClV
- 'Tlc+fQka-0&6XF6(bF-%i3Mm)"2`3KDGJ"(I$H6DVqcBDk%EbHI+maJ4e@Hd)q0
- J4,dc3MX'K(FX#0*@0#1iD%03'Nk$!LChV3Mm,!Mq6-D%H%d)qqd)mTS4qCS4b@K
- (Z0#1H`)dXGS4AY#05d)eV3LkD%8@K$@!d['D%Hq`)q8diq9FY#-4S4il3Mdf"&K
- Tf"%)!4(!M)!LU!Mh@"%E,B%4l"J49DjJ4S+$!L5Mb!)d1jB%9ZpB%D*(F!4+V@K
- (VX#0'dJVNI!LS4F5"-)iJ#*#2!3)TY#1S`)NkpJ49Y'+[JY#2&D%HL`)Ka!)d!d
- #1)3)jV3K)3!4*eE3K&J"#X"*(8E*S4`'"%G*#%#%Li!LU4f!%511`)d#3`3)43!
- 4*4U!)Uq+`)dAef"%)@(H%`&PHG[#&Y9fYV#Xp2N!Ke923mE0a+qE9j%rPEr)VFl
- Icq4#Tp+G#9&A!TEmTd)@ZS[1kYIk,cHIG[0V3SAHc`0YFl2"+I`MVRhSeCCid+`
- 5NUK5TbV'VpcbED0HFHTpqhe&KQ8+8fVpcK@d!3i0[U1XR3M)*Hq`5bP%Sp#PE9B
- (89$UUlrbPjPjh8h#[GYHFV`,cYZe99P!&jfp6Sh2[9F-Z&$D4DrraQcFD&EEbH8
- ,T'NS6jP[#(CaUIr$ME2&VVI3A1IbXfeK6YraCN8YJGN6mlIJP@qhQAfdTeA'fQ*
- b,5iKAAIq82F4AGbLZ48i'f&Sac9$qUfYB9Z`(f$2F#f*S!BimbYB-@i-B-lB)iL
- M0e(+rSY*d+jiLYDk496Th2[952NVGF'P#G,Vq41al*!!)[ThdYT8kH[J0*9SiEV
- 14#E#&pFEU6qI'UG2(q#hNS,@'B28ch%jpkklDr`0VY2VAq"IE@mZ(Y35K39Z[&*
- IA#*lMA',B-3@XUpLLHmf@4jhfd[VL,h%)0B&AKM,Adr1R[K8*$clepXqefhEl2B
- lDllEYEbrBU,DV)E)i+cKeH4U[-R8GmVc%VZD@mir8lUee#%&1[Ga*8l6M6k-QE9
- l,-Y@33@`3&QXQeI+rSYS1c#jTT!!Hq6mL#@Nhd,+(9U1@#$QN9l#L(@1a"bC61R
- hidZ"YHi,4@d[pRJ$@V'!eAA3VYmJB4KI3K@JGkE3k3V&Cl5Lc!c!3-)dUpLDc5%
- RDclpNBh55P9PaUF1[RI*lY[9h1Ia[,jPVL6TZ,c0BJGE)k$A3KU+PjajHQrcc,1
- R@35%ee1T@!%DZ%E)Y"q8H+YZ[,q6hD-MVl[j2G)L[c-TBAQmiGaXm$CGYfYlY0V
- Gl1mRpVXdHGe8T(%D[#!U3Uiq&3Ehk&Tl2Jd,6QS#IDZFAQq#0P,!6ZER&q6iEDd
- q6hD&+mmZ2fG#dkP4$$fXj"LjaDL9T+J0EG"!#1iPK&FjP,6hmkP#()8'r6f`$4[
- f)'9AF43NqRFlfVjD(JjD+R'if&4l`%[1D*ARDBAbG0!bhY2NkGk6R$UV5T!!cXA
- j1RREk'Kf%,R&pMI"4N6qGl'qe%Y@!ir9E,Bmlj1T6f&Mkre24*[0l9kmC$U"0"%
- FL+[jhbjhbG3'Tc&4eAqLVU[SIe-EU0jAAiAbH[m[I3MG5S0*UQ,DkR8C)+4e&0,
- Flf6cfRhN+I3J+b5eaR9F4ihAF[EGB3(-EMUZ1mELZm,Bmlp[JZfiNm'jaIfN21U
- ZAMFIYm&"DjaIC3Dj-[88ZqZL+kP@$GHq0eiFm3MT*GRXHGl,Y*!!4)F0Lq!D0jP
- eK8YEFi[-S#ZNU-Ee3j`Q81e'ZKBV3YjFI[8%!)b)SD#bl3I"lI%(T5%HPS*#2`j
- [fR6l1aHi(Hbf6ce`3i[DB[Ym6fr[X3#bjFm20!L'NIRS@RYIGZGlS"9*!LZZdGj
- G$pXH%%9NEf[ZSmVPEk'NC9'RmkT"DT8dUPDa&Sb'J4D0,2h5XaIG"l'03Sa,"MS
- a@lpM,F[SbqDJarYlD'4(B0p5NAi$44A1pNHBaUY(aA69A6'SIG0IlIKQkMpIP[`
- ahqh!kr#pV`TYTlAK""dEVbrDm+LULPMcU@VYl6fq*V)AmrBmLUplhTfajhYjdrr
- qK$VlRf1qQL1Qi[XGpef,mR4K)[NC5&9[A`B@0Tl@G2$6c10#'0HXN!"[D6(!FTf
- %R%IZ'4m&64kN'pVL1`j)pNMFpVL'*GjIYCepQ*8kLiM('-`0[pY82LE1Yd[EBK+
- N(`K%D3V-F)"2!PJ44*J(jUr2%edH8p*VlLbeF)2[!Sl4qR)GILqeRFhJ2'bkqGc
- FYph"+M2!Ic#,+4T+8XK*P@0TmR2mcb)52r2cmq0mZGcH#M!&K,mL$NfdjZAaXl%
- V94fE(i@Lh!"D%2Z$VXe4+ARHAcH"fNlj1R&Z4!CY'qeK)-PckK3RmlfZ*AfmZ
- &e3hHYb0#JTX"h9Ejfak8HmYZZf(A*dkJ3q$@I+plDhmrcCq0,eNIr6Dl+IkReG"
- f8Z0@Q&KlIqAEqIQ4SjNM$3CYq6'*0F6*F5+Y4JST#!`Z1$5f5,kPUAhLNIH2D+j
- IQ-U+hH)4r[*e%XcL'&DDVScb4qF&SC`NKm8,IIaiI*m6rPNRmbC0VHGeRh8+AF'
- 0&D9)f9EqE2qU4C8VTj+Kr(-GbSG(X(jG!r5QLr!f`Cl+@$(8lKL@8+6E'ALPTL(
- 4q"SGiEPT`GTpUMC)C1VSc(4Ef&Uq&jHFHVmJ"2+[0iQ,jiADpYHA'c6&qfe#kK$
- bZbQlV*Qif2P6HlQl,HBY2EEI[CZ24!fLGQ+EZ-I&TJ4ZCTV2Gj0[jqbfFh*qcLl
- I(a-Qe-b*1e1RD*Ql,$a-VZqcQf6!lE8D16KjACf@N9"SQk12[-EFpR0XBeM*38q
- PB`Phq2[-MFBGqQXaLiH0PGR$UYMMif8"@5,p%"@GVMlRH+@9E!VXfjIeKGHAk[2
- Sllkh$YYGXGYXYRFi[UrKmRqQc`TXUPhREF2bH*fh$YTANrMYp3A4X'IcSDUaaHA
- AI0ZB5V5lUG-0*9jap$P6G4pE-b*&jakVTDZ%9Q'(&QQF*0[CYTk[2rcc,HhV*&c
- RfX*ZMe-lQISZXfP([2%[KDFJ"-Ee!Zrq,[iV$2UI#N$[Zi@&XDH*[-RDifkbR-k
- #-V48ZjHQLraDd9bqc4De'@H-&IKdkBD5q@'4-1Q#c+R24J[!h19Mj'6KB@dqZjI
- NrPX0AD`X#55K0(H6Ib'D9'Z[1UY,5eH4'j)%8E+Ehe9TC@GfYlFGV4X%$,SVP8U
- j!UEhN!#4GAY+1PdVeHK5h-rRF[dGMdG$,TeFhf%kA&[l##9MLqVe,(KAA"SbTS&
- @aP)51IJm1kr*#95V$1kP8idh-!k@SG,QqAk[8!k[81Vj[PmZ1C[hB8ib++)e*A&
- aEfRUp(MAY+9EDilY43C'lR"iFrRHVdE%),(G3N%BbYeei@F[6Z'`(4r9k6d(5I9
- kMd(9[,MhA"TD[8M845VEUaUUr"iIl1Q1Qm5Mcp6LmZ1`@UZSl&REL"ZZNr`iKdr
- ,b)6D@0pEKdqq6Xf5I4kr#jGK4(%GqVL)F6"iEK9Cpj!!QjF2Vk#E9f--rT`X,QI
- b9"U"V+%9eKBeGP'85SHJS03SHT`*r2X)E(S9N!#RS'4#AfEqE0a[chR(kI2C&-5
- 'HP8pp*!!c0`Vl!FQ+1Z)9V+P62*!%CC1aPHEclQ(hb$l0,64**!!A([`m++9GH*
- 5N6Eqmc[fG-Q'"Em[kX2iEVbqATk9D"fRki[R3VVVbr@Md8%+kEHhQG&A8ieXCRR
- ,q!LUZlhKkNT!1-*Xe8V&*FFlQFJK*SLZ9iD`Nd[ph1jRRBIa1'(JB@&Z-6$l['h
- LDLJC&26@0Tk9L%'GKB@kaMJ!a-6BZ%kP$&CZ-GLXQfd*&ME$USpP$d22Qd,+-3#
- clQGbFrPcdJ0q[NcDbbe&j[!NN!!@'Ra#ZQaRBKFqp*KUSGl(f@CUi`$Em)02GGq
- JKrpF&"!er)RKGVB)SVUK4drBQJGFcU8M-mrX)A0#hUN#,'1JT&Bf5ML-"UBf4$[
- ZUjI!rAQHT[q0p[&NChflk0p6dUR2%aTa-B8hkYcb[EkG1&jqY&"4MP!@2#4GJTH
- IVC8@US&4DX)P+fM@6qGkh6kqjjD4'9Y!R!bid8Mpr"[XfR'cq$5rM6*4[h,Y-G6
- 6B2$ZrLKRe1LVlXRG8X,Fd6($4ph'rY+8aC%KM@eY!XV3kH$YL`"kFriURTV(K-q
- MM3VSD@KC`d`)5iDIaY&X)64K1-Nk9DGViUF3k1$YVI8)DAR5KEJK0IT#H0S3LVK
- @*$c1&C[0K#fXi6!1me%*FQ`FBF3k`Gi(RjIL'JfpXKGYm(E#Z4T-("fb$PLPD5%
- Z`ZCd[V&TT9bdjT(ipG&,mEA&)j3lapG&(iZZ&-[hd3[(5'f5,"-E#jc',C(S8Y9
- 0R@0c,kbPeXc56-qA'Sp(a24Qk'rR5NVQe-H58(!4,c%,'Q8bE1''Pa5*I[`M&0V
- T8*E"iM5)[VR[K4B[-l%"0B!PVED%c-1kfhm)9l*pZT@i1fZXbLG3L&IHEa(T82k
- LSYY&"Tb2+krI3KeI#jRQd,6QIfJ*q4+Q(-mK3EmDJhi&"P[QFca&$1-S0rb@KVj
- fe[0VJA1cRhT6)KE4VHfK,mrq%+l@%H(q(m)6192ZCe#F"dcNJYbYrE6S5l(86G4
- EI9K)`H'b)`fYL1JMbPBXN!!DXaj*M`@(pG5DE5&YK3V,d+,Zq-G(Bh2dp,Giq05
- QhhGie,$Ql([-2FEZE2fq2NC6+T%"p4ZCFBLq9#9l%)RFk0ekqZ"!@&rPC'kIZJV
- RhZMlNrq%,+hPd,h@3prDpK'[U(BarrhkGMY[aIi@@feZZK-l$f,rC8HP0ZU(FAp
- #MdVIr#K3-hVUSh*Yq"Grj9C8i1TKlh2ca#6EH`j@IBh1Xkce22l'(Q6X52f-Epr
- diT(B6HrlZrf2Hp(1RdTH,+p5GqqjrPQhml'k88Ie-rq9+CQRqE@@feKBAIq99e9
- VKAQmZIHpcRJY0-ZD`)l,+K3VqXcU'*)S6iTYr3XVR8lA@4rqfLlIrmUG1P@hh#*
- (2L"U6BeRKrf`Ql#I$8hIqA99C#L5F%b)c2f2m)@%hke[eQ2f-UG#TM@qXkc(eFU
- H"@T[jpMp4%pa*r%RBYKkRRbmqrR5eYN$'9Da#**e,LjpclfIRj%D+5J43RM2)c9
- H0&,rqDcY``Sb+fI#0U*m00EBj83dSJ+T'!+hfSmDlYFbmrp+F,E3r4cimfm-#D,
- q+$(p2@f[#[1P8q!$-,aY3"AZ+&GGDjRHbD(rX#(+!6p+&3,63-ce0V&6Ec9,2QJ
- 9j5KAcR4YiS#F4*E&',@aRJK`E(#PL'Sb2'K&(r($AjPjqYd*4J5M2BP@!P@2BP@
- JP@[BP-"+BJNjA8+jeC!!X2'M(,0@Ti[-$KhR+qTjm8HpmplVl63SPMrLY0ehe#0
- c[)DZKj%,@kM#8Ma4r'UK!6%(V(b$K+lUa`[EkBN%8h'%*aK#9bf1T6,(3J02idT
- $5Ilm*SF9P1AieUrdFE%0&iMJd3QmE4SLRXqFFj+KB+i$6q0-#3k@&MKGc`hb4H0
- B)1)``hbX-qa*A3X&+Y@U-YI'f3B5d+#TBkJjaDq+2ipHp3ZNdkcLa45+GCim6b)
- 6Lk%+0#f)6dNch%m[QT)3@RdkRYpY`lR'UHP6KU%mlAMkr8DhmP6pk1XQrNUG2k9
- a#[A1QAbc$V*9jbXfj1,RYpYGVeDZ$ED)4&Cp)4P6m0S*DTqB5Ri+&V8mC8a`@TM
- krdX+%`alZ!e%9U)MCE-r0RCTI#NFU00,9([91I3Z*r5M9eMB'kpRkU`Sb09Sr&h
- qTfD8hVE4@dEZi3r1P'9[BDq`1fTi[I3X,#aN4id1UV*#CrhlTmb`V0r$48T(lYr
- - -X-U-#eA5dYIB9R!!LZrG38+VJHi&IBEic`SEHXlq(9!KhqQX0MrVJ`XYU'@JTDE
- 9Q,a$D&6b25NiYCqh`iV,pYp&0rE-LdmVIQ'&V-1@@P)hM@TZIHIk[Ra5CRVr8+d
- `H5D8M8k2QH'9@U*@HUAQmhX)T(l[[DD`qTkG6TAQmbS65QeBi9+ceQKMci99+XQ
- FQrc+2aa@&M$hI!T5E(NhqrSp)Xl988HCb8V3AR+2JGV"mQJ`)3Pr3KkGRml#69a
- h@i`M9XbFV)hQi0,[#f@'k#lh(h4f"-M*#hS[qLf0'qK'PkD0UVqj5)qT8jHV!6X
- %q5Y@"1YLM@m8EX)Sdl44l[FiIeqch!MXI%`p&(`AX1h,d(5lQ2pIDAreMdZ4Z1!
- R*!6p)#HS!R0f1f6miBm`"0-!PL!QU!6@"H1QMI[!6i!%q-"1N!!`9,pl&(biSr!
- LMm'+2i-8I`iSrhiSrLa4ra'1p&(mU+2q5+2jN8Imd8IMhXk2m4&*h#!MJ3q4"rN
- JLMr(&(rM&(-,[U498H+UNa99E&99d99-LUY,&9DD+Ukf+UXBUV8a9@UPd+UhU9"
- V1!J)i%2N3Ij))UV@49ABa9ACa9@[LUU%99Y)UUkLUVb+U[SUVYiMdZ9AG49@hLU
- U-99hX99M#fb2UphNBaLfpG06k8*LlC@20bZm6m-PL$QlV'Qph6TiQkh")'#DE-Y
- jYX#ENlbR61NPKlRVY(,qV9HG2a-2)bZZQhf(hHj4#8FM(aArL'QcIVBqmQi[GrC
- QjAfDH'ICr%arXGRSp&)P[8KpC)l"!l'hQ*LD'4Vd#mR+&I@b,PSCMlc+VC'!d0`
- mM)M5-3"-El%H46qaeqbNC95Tc0TXT(I!2G5p*)riaJ*p3"0[#YJJCh88M-LNIFL
- NH&HemML%QY!",ST!9XHqLNIJLNIM"Mb(3a#2i+IjLJjrC&)id8McYP)q#T82%pE
- D#-QfVr*(AEFkZK#15)aY0mkIr0ZS3V[(M@CJU,m@P`"UbR8Y*aXi*U%FHUXY61Q
- k+M)Te)YFG6+9ICRBjP$G`0JMjmk%Lfd9chfjKE5JXk*ZPH&D`T5D&q&NZkrVK)S
- bIRJ`AfV8ae%`-PfQ[ZBp2$aQkPJXTCe9+c%Q'0&$)dUD6NRXDG5piF8kj'+[12(
- r'M!B2$9JY@GTVGL3!1m"V12h-[lV0`H(5VlIVi4dp[LI-,3G&6iD#lq+Xc'GH$[
- paLBq6KZ,+U@h8Ap(dZY"b&2)QVV925kZc6#[k,#c3U@CbPRBI2fN*AclZ%Ydc8T
- 'DI6,EG5k60NjhpF*5lNblFRh-JQKG2-Ifc9LmCU0R2E04h`c8Mq,q'DP[`c8MdA
- jCV[rX&(k[dC`1$,*IqV-5[GXY)m*6b%2LBc%1LeQ*)c%)H[0Nb#r*4MEZ[,pKD$
- aTA+c,IY+b6HIlMXqc6X8@dPdceHM2&m58(d%Z%2E6-H!HH408*VfQ1Z*VJDlfR8
- cJDGcF3a,1G0P12NDd'#0"Gf2dkFKQeJL'ZHqSaRd`NZPTD'!mB#UiUUCbN8hKNl
- rGBqibM@fFiANRmZXAPc+*VI4Y9EfR,QA1IN9pjjF,keKIjYea-@40Vbm98cZ*qI
- - -H3)UYP6JVR[E#5e0Ib[QerqI#XBIjm,PEqijpC!!ZVmrMM2GZdUJme-j6,bN,N5
- 6``LV,UrTDBlU9HU-Uh"bH$RjIeERplpaDmBf(+j"%jk)lDdjGH+V6T!!5[H'f@#
- `4I4r[UeeZ[%`k3`Z+q6L`p(Pc1["J8#+64Ch#Bm#cc*ZLGm6AJi9,$bYVYVe08*
- cF12hS$`eQ[449#Qi[AcZAATZeA[$TA5EYKX+DG'@Tki)2,Kad89abSTSkb`IL-T
- *6((L'I"CMT1A&CU9B[VDDmirqlGkMeY5"Kh@&$0BDjAm3kX*r1MC$Gfk3q1kij[
- 3IH0hrG)iI+l[EiMZXmHr*h(aUiAr"bi49U5LIlbm(KhfEb-h%q-mPh31l&jF+$[
- E%qkEf@4KlAE2@r&9jF,FeQT%kT`Mk(9NLFGcL%23!Lf!MRVp+Z#S0j!!S0rb8'r
- X8'iUJhS+$H8S0jUI95(MU'F43E`3'[3%`9$[`J0I+&H+!ef!Qq$+Q"&Z!Ni"%qd
- 5"#$PH!NXBVVU91,'bkq,[FZZLSjHRLfqAT)Zkbj-AF!TfqAU)Vl,PaAQA(LZX[3
- aE6,N48-[34Dr,P4GQ%RBK*V!)YF[64DV,dX@Tbp(&BjIc)ZY#c6CIbSY+$N`3&G
- PpE&@Jj*!L2PNh9U8aQH',&lZRYVmZXZ2bepV#Zl5ipEAdC+Eb%9CFrS5(A8mcVj
- hV6R$E0`Yi'@1TT8k0Y9QM&,UG&G'K+[R4*5'lMAqmLeJL+259(Te"!G"DQf*NiH
- (ZhaCDbi*CFT66e0)GHA$aEA8IRi12,31YT))F9@3!,`)%$["Y-+TdqfiH[mk202
- Uj),'(B+J0+TJ,!EBT404RKkQijRa91RCl6f!'LMd2PrhrUfr5I&FVKi@&5b-Il#
- Fdf!mQ1UdCk@Q%X8K,"D3!*XLN!#@#FU42j@TLc8TC2-SN6cGpqAp@hq#eedk%*-
- 5-GAPU+8P#MPTl%+&+R[SAIPr9Z2E9YUjJGYj+kNAhCU(d-r0Sb*YA&e[CeH*)*`
- Ub2QrpcPdSE1jrqlE3,%THTJ*$J[FBi,KB9(ZpaZ-2*b9UT*"UV@iGUReaZCF0AS
- )Y,6PmE0aT925T'dZ&GRAfEqrJVadHk9eT`AFLijjaT(iP8i@pQD#@Jj1C4V+G8P
- K++4DAp6Trhp0-NG%e$Z06`SVP4#USSj#YQk$DCRRRM#LeLLfJSfD#hh35Taq0hp
- %qGLTL@U@q-mj'J6MN`6(ke2K0LFpaRSmi*ihXEZbh1kL8I`j5Z9bLBH&"diciAp
- 1-T*ke%,Uqc[dVr)`A8ra!EL*&3lJehq4hHkHA[V8Q`6$U2@YAVJ&H9UF)bSUkKL
- qYVkFTB)3L`$h)HA$J@e@RZBrrrGeCP5!K[EVJTFHa+e26Y$c!SeFfrQm'E9hfCN
- 4r-)mXL4&(b)F$-QhrdCjqXeqE09G0[kF1ZR%M5@`Qilh#`NbaGTY60jDc(c8MZV
- LS"@DR!Qk+Ph*+e@dQ-T,4P#1,QcEqhUqiRCjdj'YGSfM@IE(*XY[DCG!a5V,Hdp
- EAh1HBZ&TkdiZHH0+Z#1M[%FC9@%85*bMTlUiSbP3fK9$Ee3cUe$-DhUm1c1$#2Y
- l(P6VIY$kT*NC9Kh2+rI3LVY@FQ98F##"%D16a&UBKjibA[M$ZYe44il[@R6Eq2h
- P6i8H9V+ZqRj81`M$&4h6k1"pXFCCrG(XHJN9MVC'2hefelXlaalN&afNH`pYP1H
- +JjkU`pqeqR[dk(MNa&FA$,p-qT2BSFp&r6V&IdG2*NAPRQ#iJQ&mRMX&TXE[EAq
- cGD$$,ah%SelYCI-18k%SKKq"fZKPVr)NmN65E,9'XD5C3X*D,!kb",K&Z@Y&VdQ
- UQhpbCTc@Xa,8p6('c8QdT6(DBDL#@#!@3P+KZYG182GPHCeeQ'FG)TRK%T`qBA(
- PaiLe)MN1r`X,ClED1h(&,DX@b4a(Z!RHh@EL-%2Q+)G`q(0+fLp5UfUf0KrYk50
- 9&-*fRE'(9D[5%4(B$JlTCT+9FRpV8iE!SNMm"1E"M26F)mM(+i1&KAqcfIdhHQ3
- j$"icemrCMV")"C!!HRCV)DjPTJXT9"TRYP,8kP$U)L2IjYTF2KmRJAYhY0VGl1p
- fah1ApX0JZf'CpD+PjDkLfUbj4*Qi%fp4K[pHDid#k)6fr,Sq+r6mRM'F+pZpMIG
- YHE'j(T-U#E!"S5)T)%8%rA`TJpE'r!6`1fUPT`d&@k4GGA4V&`Z0,&L*pdbDA'j
- KZl"IC*(aTEeTF(Y`KUfPNii3%rELq66`9Y%RFlhATR36'9P&%Y[VeK)9FNaE%Y#
- 9HCb%a*R("*R+8FRD6hV%#m'jplUR105XhVF!#hkZjcpA$YZ'ZD0M91S!R51K$@(
- rV[`R&!Hc``h[(b+VNm'rhrFm-F!R#d1!p6IkcY,!F",5Z-HB**hURr@+Z!L1"%N
- #+UTre6fP5i&[D63aURM45IT#LUH-5!F'P-AMkm&H2VbiFhAkL+@pLA*eqS(2@D)
- ,3##4r'JK4X(XNr6PmV9)rM5B($ZId8r@ifE4Z8-)b,,A[C9kQYe&(92iA&Hq9a&
- (emJAN!#(!9hhSMHHZ"(TMIH08p3"Z,8jDQR)b)DL-2Ze4VCF(!iG,VEIA#maURZ
- 8A`P2djFE!iF@X4R)k-iD1L3@B5-3N!$pq[e&*m2#r6JF1kZ+4ISYk[93m&BhZb,
- 9KU'Gr5N*YCAAIM5FSZE9c,QhccQLSk9m)6HbKG*UVEY-$Mk)hN)l!bhj%)b-P04
- NXVkh$PekI#5qc&4RJX*1Z`S9V!SS+-1+fkpFX$c(l+6@,e&JU00DYHdCah5mkKT
- P-6",0#6fh$f&V8iY10X&Ur%#,(!5SFG+DES&V[FqTN-ci+16YPldERHL5N&3Z')
- br[EUpaZklEKX$YJC"JJ[J)(59IGVVIA$SVqPf$d40BBDU5lE3B$XhJG$`aMQZ`E
- 44(Tk&hZ#'A"Nl&Qi1jVi+c&TZdd1(M)*q!!LTBL[MeqS*U[B*USp#i%Y-6U0IcQ
- e3J4q[qZ"miNECdX0!U`@SJMaNmAci9aG%[k9Nm9e11lJJ2'V%5&2jN9"rXc(5eq
- SIpXBM[%mCc(H,P$-XG0X98BEZDYLU6M@$eBUdd205UH!RS`jUm1QP*R2J0#DA0P
- lZbECFdldC*HLPlk0&-he9&AEk2&@ZMEcDG9aZ#Cl3H%cNLM)SA%@TH1Hf#D2dXM
- - -0CKlH9hadRZ$5L3HT`QjM`d38-BT$,6&*6A-'Vkp%jEYA6C*$fV5pCj"q00a%8C
- 1d%Qm)(da+re*m3!dT!$2G`!fV1p@f-jHQP,FZP(3)L+5Ac)ZXaGd"RI%q*k)T6l
- %9BYCETTiQR4)[B!Hb5-T*C[4*B[SNMXkk4SPEk9q4-2JaER-3l[EIA&T$!P6LdF
- `8dNAEV[aHA'le[JZB-D',AfpIRhjEmR8kV2`102DK0(&UAilVhd!+K)!DX+5biM
- bjCcF3c*qbma$)(4)b"'6pPh6%F&Xd&R*kNh#PQDkq%T+5LmXaG)FlZL)*j5+8ZP
- [9)M8V-Y'aZYHTPT-#dYUFa20J4,*%d4[2%Nb0`pTmRcSh[QKDlMM@lkIaldp,l0
- (TYe9fZPi*ciELRpPe3R#`3XXrThhKAAb`Xd@Gi6QHq`Xa'qI9RKV-`pGGGa344p
- ,l0rQiMREAE[dm(&`m9a592F9eTTpl!N")`rK!6h!%phbI[)$8qRX$,VmMb3-q,b
- 2`8kT3lrQSe,8-ibMArZ1jpP-`8k)H9iGcYE[Di'cf@eRhHfZ+(EB'"YMVD)V2M6
- (pf[1rC1ZFApR5YYG$`Be!"[a4X[b2kJ5q1R++qYCX)f`edErR6eBR%&[J8@Y@Lh
- fN!"C0K'8HZ'&5%V'V9f(c-,LN@qqK8QeQ[J[prTf(CAeM'6XD[e%mAZBPNe[D9A
- P*M8c9jj%+T[C*McErZH&XHGqcT6IBQqa0[p*[LBNl-S%4iG8S4YNkcS%I6KT*r1
- MeYMIR#,-QhpMIl(ra$5pc`V(el(ecY0fF1Y8'e%fr%Y0Qhjh2l)6(aZNa@3eDC6
- r8"c56S@KFc65jYEcMr*lE@-'D$E+$Ei(Sfh`%A%2Y*ZqSk)X+M)"ePL-KfHZMH4
- VYG$bYIDHVU[aB[UkR@fRUfIi-AeE+hUmlCh1I[qR#2p+G8k&[S19M91J"A4Yj'G
- Y&'*!(I(Eb3Bq-#[iTPGq3Ba,FX[idU`kL-Q+qQL5"5jR[NrDXm+E+6M4ABVXVD9
- j2mJ#DKc-"mRqF`(`)Sr%#hfcGlkANC+p)[QT-"i@balh)2ND[[1@4VUHkXMAaG6
- S6qGqclQajHXpFFK!$1$DA*5DIr5ADh3%JhS6C#HB10a(VCEC)0k$rq3Crl)-RKl
- ir6X'b%!Fj)9r[bfXK`91["Hj#TF2$91H)S0a0F4pDmMkl-Mkm9kMkeQJm2DA2Rr
- E52UIe2p0C*p6'kRqJ&I"V*(Kh#M%J$[GeP@$(ZJ9lpcMG6iAFIA8peqSqV6#kR2
- Ec)T[`rFYVAUFmMq3!"R*!1Nf3$T%J!-8j'`3@k)#G")T2*qm1Xk")eR8i5cFYZF
- 3c4@dNKhRB-U!5krPH33XR5q4$4Z#9pQIcq4!a-a@%U`f'5fh(cqTk5qHrCBkB1M
- C@AH$bla+IfHfZRhNA5qa&C[Y8pDVEmFkFTZ*UE"lQ#ri*k&hj`bpaM[--YLqZYE
- @IkdTGcLqVq$b-B$2MT52*QH4e"L12mKEh`H'iPXd2RcKj[k21PaRKiLkIhL"ak8
- Zrc+9HJCSrN1NkI)X`m5i(&@DP,,e4jF0h'1k`qp*VSpJI$cYbfZci%,`'8**HBd
- afd0,HFI46EV-E[m@$GrMTQc9F8T-HiUIppp'YNb)UhB(,e'm&qr!0kDq"5%2mG6
- J'6-FAR-l1E@49km$L"fZ!k5"'[QeLGk41hj9qbC$R`TcJ*eUShK[5qblU64kdT!
- !XGPm)VchrA(aZ%"YeTeeN9D"Ref"J@DmF9fIE*k)$A!@DIRL5Mh@&4XV6IB'c`F
- #Tcl6IGVHhmfTd(d69Z!E4"I'q%b2Vrk+EV9F[%BY`Pe`DB,[JdEN$AkjU((V5UZ
- cIq-QkY8@63'm0b)R`-,ElbLf8jcCHBJ%lPeQRFbP8Y5jYP,i!Z)[J56N-PC%Y13
- `MKfjhbZkQhiB5,IA3c-r%K-TDBqka!LBj1bQ'MSlP+$ErL(mh9dh%K)[[l%[05j
- F9BJp9eq$`cJ8U(Af6IFP%E"k-+lcNrIChXiCU0SqGq*FJpM"A@ELVlV$KHKV$r)
- *UHY+k+c)STASj&6c%c2T5deqYGlN#XpqP`d6h"1qr`Nf)Y,pIepG,C+Z0eR2HlK
- hL#PRHcF$8M%6F!r)K(l-)QFQ@d(VEYlHX86bYBVe[%Z[%(V'DpI(k10HX$fJkL[
- @dI'c5K@@TpbhaiF,l#ZeMq6U3pFM-9`c$*m'-a#033@I602IQ-MGDr$1D,lk-ip
- H6!bLGVlki"YEV#R3cbZ6qIC`5k2&D[jF0VA6KTE($8Db`r4rHIr-BIT0FYTN5Pp
- `[bqP4PpT[URX1,*,B+P'hIT152CG*`p'LTcXAmPR'IH"bZHX9N'd55j5YSaLTXV
- 1i5"8[-@B$lMcceF%KYIi&mlqjL`1-qY5[d'8Tma!3j!!JYUEeNd43"(IYrScm&[
- Ui6+`56iRdVDpm4"4@5d!6(+!$$pQdc+3!%R`Tc8r-bVlLpiGrFBhVU8D8Tf5IFi
- 6SZc-L%b"lSLdbJ`JFReFUp6BP%e1DY258mL!Fr6aR*ppc#qVKE&l`Zc4AefM-0d
- mYh(kR3C@DC-ap9kQBM@$AZ2UCaHfaA)pbd(Z*N3[hHpk#G'a@fBq+[G2L@p$@,M
- AZhbA9aMDj)ZNMiem'Iqb[mkkcXA5S&@)U,if$*MMqUj%-arNRV8IjFrSF2Z0Qi[
- *3-Z'dY0VcbZeV(53!+pl5(L"PeF4rc`4`&)N0"kGl`cic4MrIAkA00ph+*p9lP%
- @XT@[Y@8TS+15GA4$#Mfiq,5)q)rDL-FC4la1-HfiTD2i`')h)`H(eTC36cI5mff
- PA1DcqhY$h4jEPR@KC*JV%3%YF+"[UZ68T-*lYVfII$5NC(3ELa9LeL*C@)5f4AF
- VlTFXk%h!@-$SRP5kCRRXlGAPD[8,$lSUqkBJ8iqiD$549SqcSM4DCc"kT9QPr4r
- Gm96SBIk9$UfEJ-jKSZ`&FchK5PhN$rTdELRRX6rqE!HHPap6HHkk`3QAZRec0([
- qr1QbNZf"[8emM[#6$E8VdeqNf#!%V!8Pc+q4'KhCHPM3dP+6rj4U@RLXBEXa9TN
- 4CqE-NQ34[8Q3!!DMJdL@XUIAmE9`M8Ukk3'Ve$Sp'9(hG6TP-(G`c$4K6i60`X1
- $4h+I#GklFD3f,VQr5R!h2Aj8$192`LPV6dB+FLkrX*)PMfKk'$`ejD%(VHijh-j
- %9N##i-NUG'MPjSMkMq%Pa)aRPl`a09TIlZGc21`rfI3a$VIMG*A8b*!![5S2ji8
- 3PPdc9TRfJB[c)MAeRQ*,iMY(fQ!e4'0a+0J09,K-GBcPG(a$NNQ453BQTY5@HC6
- U1pR8i`YeL%9lPAaRKd-96Xp@C5'[-TbR)@eeA*%SZh9@$[2(ZJ1SRp#))C%lNS4
- 9RCEikZJa#5D'k99$EGHeYYZ[I)PBYCf5FZ8Z+6f@qN(V(Z[kb!@#RAP#SGBQ9)[
- jC@p2FmB8@jXj@l3Sh"[630A`d0Gcf8k%Ypc*%95V#0kX9eLEh#HQB*18$5bX)1$
- kPlmamQ0BM1*j%R'F$D0#%cVpTkdlY,MeYH[KDErdLMZXEFUq9YSaBiNK*pYEJ8L
- ESST6U0$hhR9p3kh@26GcP,#$,U,1&8Lh,L%T(1d0Fj)!D*+eE1i@RBlJ4G*rXl%
- %"6MVd#9M)R'rNTiE)N%S5AI-9f8fVGrP"`D1iHVjlQD&P`'1eQe4bMQB9A,r!AX
- Vrcb2Pa[A(1IhSjch,T-[#%9i0jG-[#854E8jJ+GQMC4YpJm0NQ4m4'AT&MQ+chA
- `NFB#Y[klA969G9869*H8cU1*[-R['Ed284q(@fX%a2*91qC3G#K4el8C+h2eh-I
- DAQbUZ'M6ai5kXQJrHVrZHfM"P2$dfMRq025Y48QMf2c,LT86%J*Y+Me)Th'4'EQ
- q1*,1*9%S!AljDFE)Q*5dAk(GDVS,#a'8ma+5%Ukm5M@C'b@G3FjGCP)i6dBiqf!
- )+l3[I!PHTNpB2$aCEY`bUik&N!!K-46UG)aUR`r"+Pc)e2iYU"BQ5fS%lM8Xb2b
- e'5r&iAclYDcL),C0PF5Xi6YDR-6b"C`Z,Va-54N&$eMeIQCQ1bAVdm(Kh@EMf*m
- d%b2R*J1iEd#9VTjch&p`X,[R'0HGZqBf'%HPTbPK`'6k"jfp2q#"Q4(i%lXTm*K
- !L3B#![[pmSZ50N`SfY2C+C(QLIm0YB%[cUMl0`[XC'9Z1m0)Pj4i2@PIL3qcF5X
- *iT5IepqIa-52UFejcN$K-Rl10Z(8p9Y,XcN0e6EraK'I`-#3!)+,Na3Kq'R(ihh
- - -IEV)9h,C`-#ek[9k#kqj4QZG-!d2NJ3Hib0[E'Vm2-pRIVp0)rLjUfVN0*T$66r
- Ri1,B$T+a(5FEJidVfJ)rk&l!Pki$K95EB3'+-&kfN@fJHSTYlUbVTU9T!48()C8
- YDMiZQQ)dU#+M5dqK"I*#Ba(2ZL%3KK-F&BX&MXV1K8pp(bGr4b9eC@2JqDX(%L5
- 4+1RY9NhUpPQ@TPV1Q'XFZ$DV'R9pfPDqkZ@Di%Pr566[`r69`aBrXjXf5-*k$,6
- AIdFV$a$fBZ4`*Mc,9XCV-9)YDDRb+ah@q5$6*@+dTd58Sf9C9eq"58b*HEIH)pf
- G0jM8X2+h#GhmY[`fh%&H!N2a`QIiFZArSBbqRK[B3f1ff@c2@,@Qhl8QT[Dc16j
- `1%mdI`S616Z6)Id%f'Qk)'BN+Si")DMdJ-6M5VjX,Aki'8cl(DDE$XI`!ChJM,+
- E$k@"#Cjr`b1el[GBeAmkIr0YFEGC8RDhQ"XlcYp"IcpPXqhd0r2f1f[,rEAHcd&
- rJE,DlB!!!)!eCP"JGQG`"i"f#!!(!("`F!GSKi!'J!"`J!!!!)"hF!J!#(L!8(D
- !9BGh!(!!"`!'KJ!)"J"hGQD)C`!!#!!!H(F!!(!(J!#!!!!!"i!!!!#(#!!!!)!
- !F!F!!(!!!!KJ!!!!!!D!!(!(!!!!!!J!J!!!!!!(#!#!!!!!!!!!"`N!!6-!3%!
- !3%!#%M1)N3*`!9!QY0Jcr&MQ`@2(b6B22TGXf$fH6SSrXqACQ[rE`p8eq[k2GHi
- F1KYlf(i@pRHZlq[Eq1'N1GVdlQeDRfG"SU52Rabm3&c2[cmIG%C[k+Mmcr@Y&bI
- TbSjU02-NbD-8X@D-95,P',kD1-AHrea9YAZ#hF[4f4BNl+98+ekN5aU!rq8Y9JM
- mFY6LL*Gd#A8UeX-pkB+q"hLMbqUA,rCpmi'3!'UpS-V8rphpiXb+Ir"%4X4j[Pe
- J!!"#!!#DLDDDTSUTS+UUS!S!S%!*N!!(CiKRH'GhCRL*H!L3!!9hCAL@QAGRH@C
- SL+N*#3F&Gf4RGCK@C@T99SHBQ3N!#)!4!!)M4%9@CfGhJ(KT"j!!!!#!)#-d48C
- Q9PGRKhKRDBH(LBQCKk#TN!!!N!!!!!S!!!!!!!Ve8@96CD*p2,0AC#HZ%fU(2dq
- b("ZhS@8dd3XlTV)DGQVYM@!b-+GPQ[CC#R4$$XdkqMVr1hC6$A96RfGNB63e6J(
- SRVXReGT*DkGP4'G@H%eGFH[64li9cji`ke"'lEa@3lkD[EA$[RXlSGG)"HQD[XQ
- S3ej&S+Z&c60lqZ-)qk1U(*ir(YlX)@bHKkE+ik0P%0&08+)c9DL[1kR[4i'$HbR
- 6VRSM9A$YMUM90C%#BAJ36U31qC%ERKRf9P!j`XU+GHQ1T)fVppGNG-2+N`3Ye
- 45158P*L&2e%bD%%9&B8bR004A5jGHZ01ZL0[mpJA,6h-bkHX6,40UlGNhE'kNMc
- f3lSdDa-[F)rpp1b%e8B6kS@qHEXVkpRDB-KEc)S5A%Mljk+)DSL$`kPb)Udf@6$
- +'rTkkD+i8kJHh*!!&NpJK#DJ,iQeCHU&9%qSUh45+0KZ!i"TGe8qkDUX!pR[eLR
- `@GFE,)e*NNN@88dM*FjT93Rd)dl0P3dJ8mff$SdEZfc)`Cp"PG`SQZR6'(rpNic
- FZ`kaTTTT%e,XjC1"d43V2ZLIfR6hXlTUY+-$25'Rh6HiL`Zled#X``dTC9dNUiV
- $A3%20f98eeM@LLbF8V$3*VVhEGZhQ"PSTSSTlc6bX34r5E558-Y0*QVDQUNHeDb
- &-@F9ZhDAUPbddlZYrV"@l5q5+LEGTKpC#Fkq8eTeHT`0U+0PHK(H('!-*3ZS@DR
- l*`ZC0CD#YTl$G+(I95-$KkpFHbB`"L%[8l1hZXYTCIC4R!fZq"-PC!TDS%1L-4U
- 09%881Ii[X4@R83iF`KbV%qlQ1IXpX2ZSMRr@Iffpkp$Sl,)I9H!cm2Mh@lF2KmG
- UebG'2,Q)AFY@Y+1E&KYHLe[ErQmpVpP[IRMUf3rGK,bLQ`5)5r858L,b55jjl&N
- R"H*)4di4&9C*I3dZ21`EjKD*4qY&,'[A*NB4qmShLY5C-NRi3r&L0hGeCjq8
- 1MP4BIB-e+)U3!!J,dj1MNP`qV*,$Mf6dCb59U(`RV5Nr2a@X@20,kCFLKVMPp1,
- (DYh[KmINiS3jX@2lJ,I,*`hISqRPjH@8"YZhH[AVi(HISpFZlc!5rKKmYhFZ5HA
- E!Ci52F,"lf%HqMkEelcAVZ(bNpYF[4NK2$Lp%'36$0d3A"F-236q3(r(NNhFS-I
- !$h!9[mpT'f5$NH%q&lK[)3VQ[mCrb+Jp-E#(A*p[cNeP"VPpA'KTi'0-R"K$Hhc
- &XXJ$rimriHV(LcH-aIIZ5B0Zl*HJ2A)%TKH6,c-3HqT!Ie)hjPY2R58IN`h[**H
- DP6q4)LpH6Qb)3H"Jemj'LfRL$h0M0qm"lU%'C%dhq(arf48ZpZhj,r(G`lc$0P1
- VCUamY0E0hf1pGIled5KF$b`hYhf&GI+59(Pcp1*mb'YBZ8C$$)9HU%-hf5QR1!Z
- rMabY9jImbiRi'RSp9YDNcjmNDdUeV)+l$D`j2ANfNVhJ-*2YHm"Jjr9l`'$RGHm
- $9!T*cQ5fU,q3!"4IG@f"4`mN)0%BaVH[R12UEK!#rq5,Y@`HSmaDUie+[3iMZmN
- EAcJKh'eUA'25N!"'AfrSl`&m1il`1ZC$l(H!`#Er)Jh0rX"F[8h!kib`*Dr$Kqp
- QIZmV2T&UAUmk-KU*Sb"rK,[iqC[31pb,9R#AGeBDTZmUVMQU!arLdi%$+I#edpF
- iF+Gm*R@(l0lQIZ5m`ekXI-[eR!0rFLaKE*Q,#rk3!2-(BjI5U2lNQqBqrX4N`@j
- LIJZV([#RI9ki)N(mDXp3Qbj'UUQVLJ[Yi-X&m,Vi@(l0qbHbdd3VpPY-DkarY)'
- - -YP@rJ`110(I'FVVM2T9RA-&lhTF(,'cNf99deA%&&EeQ8qTSD"4rTR#bd"ZI6Hh
- VfrFNi6&Aml3k[BY@F0)IA&aEMZ`hlekl")REi"GHb[*jQY*IQC`+f4(,Vc&50%T
- kV*`,pZA)@2kCFf,(KbjXQ,(k@)4rh0dc96DFdIdXEFHeY%%))MM6JTCkH[Hq[6K
- 1eli-&Q2J`Q&'PJZ`+GN'lXUN%eUe%(JCP`IIp-klL@&aiZC@ijC$plL*[$e)CJ5
- ri4*emL+`1*5$)A+AJ*-A8keq9L9Up*a)QrK4NMRZLRFipm%l!1F#lpf4R1bqIC!
- !qhRk6-Bk0Ua`!Ak'm2)#qkQI1IR,0,NMf@A"r3Xp2IGXL3lE9Vjl%&1QbUdSHAK
- - -N9UeiP&DK6pRlJ`LM[krN[ZrVpFATe$5j-PpHNkB0H509l%PEjQ0!I%5REZIAVT
- UX8iei-AaZ$[H2ECKfj`5Y2"`5(m1TqER6l*ciaddhY[aXr9,eZ!pN!#kr(VQ28p
- cdFea8!ABF!!p[cR`iR*XR(hVpcq"AFMqM2,cMa#hjm0NAVc%k(PHBQPdc&cmp$4
- i@[lDPTmeT6Jh2V(rLf8k4DKj%Gb'pJmpS[K0TTIrCPBf3r2fM6r"(Ml[AZ9[p+0
- l@XHE6#A8UHDR6KiAa`e6MrU($J8))hfEF[aZTYmqYe0YRYZS[Q0ePXPk"*cj$qC
- U*DrH(Nm6A+raH4RPjlq#EjF$2JN!!"LVABm!!J!09@adFQ&6E'PY4Q&cG!%!!!!
- )69"69%e38b#LKF+"T["["3%!if#91!!#!!"31!!!!!!!!#k6!!!!!"0"BQpeG#"
- 9E(4bB90XD@e'BA0d!3!!,TY849K869"6)++CJZZPL!D!!3!9HZ9[!!B!!!'X!!!
- C[`!!!8S!!!IS'dX!!!:
-
- +++++++++++++++++++++++++++
-
- From: sw@network-analysis-ltd.co.uk (Sak Wathanasin)
- Date: 1 Oct 92 13:48:52 GMT
- Organization: Network Analysis Ltd
-
-
- In article <92275.011613TOGE@SLACVM.SLAC.STANFORD.EDU> (comp.sys.mac.programmer), TOGE@SLACVM.SLAC.STANFORD.EDU (Nobukazu Toge) writes:
-
- >
- > If someone has written an MPW tool to show assembly + source listing,
- > that's certainly much nicer.
-
- There was a tool called UltraSlimFast distributed on the developer CDs. I
- think that's what Keith was refering to. I haven't used it for a while. SourceBug
- will show assembly code (I select the source line, then switch to "View assembler",
- and the assm code corresponding to the selected src line is highlighted), and so
- will ObjectMaster from a menu option in its browser window.
-
-
-
- Sak Wathanasin
- Network Analysis Limited
- 178 Wainbody Ave South, Coventry CV3 6BX, UK
-
- uucp: ...!uknet!nan!sw Phone: (+44) 203 419996
- AppleLink: NAN.LTD Internet: sw@network-analysis-ltd.co.uk
-
- +++++++++++++++++++++++++++
-
- From: TOGE@SLACVM.SLAC.STANFORD.EDU (Nobukazu Toge)
- Date: 2 Oct 92 02:30:17 GMT
- Organization: Stanford Linear Accelerator Center
-
- Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
- and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
- file yesterday (today?). I tried it just a moment ago. It certainly
- works! (system 7.0.1 with MPW 3.3a14). Thanks!
-
- I think I've seen UltraSlimFast long time ago on one of those CDs, but
- I never cared to figure out what it was :( :)
-
- - - Nobu Toge (ex-SLAC, now-KEK)
-
- #include <StandardDisclaimers.h>
-
- +++++++++++++++++++++++++++
-
- From: ksand@apple.com (Kent Sandvik)
- Date: 7 Oct 92 02:45:51 GMT
- Organization: Apple
-
- In article <92275.183018TOGE@SLACVM.SLAC.STANFORD.EDU>, Nobukazu Toge
- <TOGE@SLACVM.SLAC.STANFORD.EDU> wrote:
- > Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
- > and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
- > file yesterday (today?). I tried it just a moment ago. It certainly
- > works! (system 7.0.1 with MPW 3.3a14). Thanks!
-
- > I think I've seen UltraSlimFast long time ago on one of those CDs, but
- > I never cared to figure out what it was :( :)
-
- I assume you ment the System 7 CD. I'm interested to hear that
- the tool still works with the new MPW versions. I never got it to
- work with MPW 3.2.
-
- Kent
- - -------------------
- Kent Sandvik (UUCP: ....!apple!ksand; INTERNET: ksand@apple.com)
- DISCLAIMER: Private activities on the Net.
-
- +++++++++++++++++++++++++++
-
- From: REEKES@applelink.apple.com (Jim Reekes)
- Date: 8 Oct 92 02:12:40 GMT
- Organization: Apple Computer, Inc.
-
- In article <ksand-061092194618@wintermute.apple.com>, ksand@apple.com (Kent
- Sandvik) wrote:
- >
- > In article <92275.183018TOGE@SLACVM.SLAC.STANFORD.EDU>, Nobukazu Toge
- > <TOGE@SLACVM.SLAC.STANFORD.EDU> wrote:
- > > Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
- > > and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
- > > file yesterday (today?). I tried it just a moment ago. It certainly
- > > works! (system 7.0.1 with MPW 3.3a14). Thanks!
- >
- > > I think I've seen UltraSlimFast long time ago on one of those CDs, but
- > > I never cared to figure out what it was :( :)
- >
- > I assume you ment the System 7 CD. I'm interested to hear that
- > the tool still works with the new MPW versions. I never got it to
- > work with MPW 3.2.
-
- I've been using UltraSlimFast 2.0a3 for a long time now, and it continues
- to work fine. The tool depends on the format of the object file created
- by the compilier, so new MPW versions shouldn't affect it. The name of
- the tool had to be changed for obvious legal reasons. I don't know how
- it's distributed.
-
- One thing worth noting, you cannot compile with the -opt full flag when
- using UltraSlimFast. UltraSlimFast depends on -sym full, which disables
- the compilier's optimizations. This is the side affect of trying to
- create object code that can be examined at the source level.
-
- - -----------------------------------------------------------------------
- Jim Reekes, Polterzeitgeist | Macintosh Toolbox Engineering
- | Sound Manager Expert
- Apple Computer, Inc. | RAll opinions expressed are mine, and do
- 20525 Mariani Ave. MS: 81-KS | not necessarily represent those of my
- Cupertino, CA 95014 | employer, Apple Computer Inc.S
-
- ---------------------------
-
- End of C.S.M.P. Digest
- **********************
-